Public service awareness of crowd movement and concentration

ABSTRACT

A method for predicting crowd formation based on movement of a plurality of mobile devices is provided. The method may include collecting a plurality of location data snapshots based on the plurality of mobile devices and a plurality of cell towers. The method may include determining a plurality of device positions based on the collected plurality of location data snapshots. The method may include determining a device movement direction based on the determined plurality of device positions. The method may include determining a device velocity based on the determined plurality of device positions. The method may include identifying a mobile device subset, whereby the mobile device subset converges on a convergence area. The method may include determining if the mobile device subset converging on the convergence area exceeds a threshold value. The method may include triggering a convergence response.

BACKGROUND

The present invention relates generally to the field of computing, andmore particularly to tracking electronic devices using cell towers.

Mobile cellular devices, such as smartphones, utilize cell towerslocated at fixed geographic points to relay voice and data transmissionsbetween a mobile cellular device and a cellular network. Cellularnetwork signal strength between a mobile cellular device and a celltower depends in part on the physical distance between the mobilecellular device and the cell tower. While a mobile cellular device maymove away from a first cell tower reducing signal strength to the firstcell tower, the mobile cellular device may also move closer to a secondcell tower increasing signal strength to the second cell tower. At anygiven instant, the mobile cellular device may communicate with multiplecell towers in order to seamlessly handoff voice and data transmissionsfrom one cell tower to another cell tower as the mobile cellular devicemoves. By utilizing the signal strength information from multiple celltowers with known fixed geographic locations, a mobile cellular device'sgeographic location may be determined by triangulation.

SUMMARY

According to one exemplary embodiment, a method for predicting crowdformation based on movement of a plurality of mobile devices isprovided. The method may include collecting a plurality of location datasnapshots based on the plurality of mobile devices and a plurality ofcell towers. The method may also include determining a plurality ofdevice positions corresponding with each mobile device within theplurality of mobile devices based on the collected plurality of locationdata snapshots. The method may then include determining a devicemovement direction corresponding with each mobile device within theplurality of mobile devices based on the determined plurality of devicepositions. The method may further include determining a device velocitycorresponding with each mobile device within the plurality of mobiledevices based on the determined plurality of device positions. Themethod may include identifying a mobile device subset within theplurality of mobile devices, whereby the mobile device subset convergeson a convergence area based on the determined device velocitycorresponding with each mobile device within the plurality of mobiledevices. The method may also include determining if the mobile devicesubset within the plurality of mobile devices converging on theconvergence area exceeds a threshold value. The method may then includetriggering a convergence response based on determining the mobile devicesubset converging on the convergence area exceeds the threshold value.

According to another exemplary embodiment, a computer system forpredicting crowd formation based on movement of a plurality of mobiledevices is provided. The computer system may include one or moreprocessors, one or more computer-readable memories, one or morecomputer-readable tangible storage devices, and program instructionsstored on at least one of the one or more storage devices for executionby at least one of the one or more processors via at least one of theone or more memories, whereby the computer system is capable ofperforming a method. The method may include collecting a plurality oflocation data snapshots based on the plurality of mobile devices and aplurality of cell towers. The method may also include determining aplurality of device positions corresponding with each mobile devicewithin the plurality of mobile devices based on the collected pluralityof location data snapshots. The method may then include determining adevice movement direction corresponding with each mobile device withinthe plurality of mobile devices based on the determined plurality ofdevice positions. The method may further include determining a devicevelocity corresponding with each mobile device within the plurality ofmobile devices based on the determined plurality of device positions.The method may include identifying a mobile device subset within theplurality of mobile devices, whereby the mobile device subset convergeson a convergence area based on the determined device velocitycorresponding with each mobile device within the plurality of mobiledevices. The method may also include determining if the mobile devicesubset within the plurality of mobile devices converging on theconvergence area exceeds a threshold value. The method may then includetriggering a convergence response based on determining the mobile devicesubset converging on the convergence area exceeds the threshold value.

According to yet another exemplary embodiment, a computer programproduct for predicting crowd formation based on movement of a pluralityof mobile devices is provided. The computer program product may includeone or more computer-readable storage devices and program instructionsstored on at least one of the one or more tangible storage devices, theprogram instructions executable by a processor. The computer programproduct may include program instructions to collect a plurality oflocation data snapshots based on the plurality of mobile devices and aplurality of cell towers. The computer program product may also includeprogram instructions to determine a plurality of device positionscorresponding with each mobile device within the plurality of mobiledevices based on the collected plurality of location data snapshots. Thecomputer program product may then include program instructions todetermine a device movement direction corresponding with each mobiledevice within the plurality of mobile devices based on the determinedplurality of device positions. The computer program product may furtherinclude program instructions to determine a device velocitycorresponding with each mobile device within the plurality of mobiledevices based on the determined plurality of device positions. Thecomputer program product may include program instructions to identify amobile device subset within the plurality of mobile devices, whereby themobile device subset converges on a convergence area based on thedetermined device velocity corresponding with each mobile device withinthe plurality of mobile devices. The computer program product may alsoinclude program instructions to determine if the mobile device subsetwithin the plurality of mobile devices converging on the convergencearea exceeds a threshold value. The computer program product may theninclude program instructions to trigger a convergence response based ondetermining the mobile device subset converging on the convergence areaexceeds the threshold value.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

These and other objects, features and advantages of the presentinvention will become apparent from the following detailed descriptionof illustrative embodiments thereof, which is to be read in connectionwith the accompanying drawings. The various features of the drawings arenot to scale as the illustrations are for clarity in facilitating oneskilled in the art in understanding the invention in conjunction withthe detailed description. In the drawings:

FIG. 1 illustrates a networked computer environment according to atleast one embodiment;

FIG. 2 is an operational flowchart illustrating a process fordetermining mobile device movement and concentration according to atleast one embodiment; and

FIG. 3 is a block diagram of internal and external components ofcomputers and servers depicted in FIG. 1 according to at least oneembodiment.

DETAILED DESCRIPTION

Detailed embodiments of the claimed structures and methods are disclosedherein; however, it can be understood that the disclosed embodiments aremerely illustrative of the claimed structures and methods that may beembodied in various forms. This invention may, however, be embodied inmany different forms and should not be construed as limited to theexemplary embodiments set forth herein. Rather, these exemplaryembodiments are provided so that this disclosure will be thorough andcomplete and will fully convey the scope of this invention to thoseskilled in the art. In the description, details of well-known featuresand techniques may be omitted to avoid unnecessarily obscuring thepresented embodiments.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The following described exemplary embodiments provide a system, methodand program product for determining crowd movement and concentrationbased on mobile device position.

As previously described, the geographic location of a mobile cellulardevice, such as a smartphone, may be determined based on the signalstrength between the mobile cellular device and multiple cell towersdetecting the presence of the mobile cellular device. By tracking theposition, direction and velocity of movement of the mobile cellulardevice, the position, direction and velocity of movement of the mobilecellular device's user may be inferred.

Large groups of people congregating without prior notice may createsafety hazards. Many people may coordinate, through means such as socialmedia, to meet at a designated location to congregate. Thus, largecrowds of people may form without prior notice to government personnelor law enforcement creating safety hazards in the areas the crowds formand to the people making up the crowd. Crowds may also form withcriminal intentions quickly enough to perpetrate criminal acts withoutlaw enforcement having sufficient time to effectively handle thesituation. Many people that make up such crowds carry mobile cellulardevices on their person while travelling to the designated location tomeet.

Therefore, it may be advantageous to, among other things, provide a wayto predict if a large crowd may form at a target location based ontracking the mobile cellular devices that the people travelling to thetarget location are carrying.

According to at least one embodiment, predicting crowd formation basedon mobile cellular device location may be implemented by periodicallycollecting cellular signal strength data from multiple cell towers. Bytriangulating the signal strength between multiple towers and a mobilecellular device, the mobile cellular device's current location may bedetermined. Additionally, by recording a mobile cellular device'sprevious determined locations and the time that the mobile cellulardevice was at the previously determined locations, the direction andvelocity of movement for the mobile cellular device may be calculated.Once mobile cellular device direction and velocity of movement arecalculated, the calculated data for multiple mobile cellular devices maybe aggregated to determine directional convergence for sets of mobilecellular devices. If the number of mobile cellular devices determined tobe converging on a common target area exceed a predefined thresholdvalue, a notification may be generated and sent to a target entity, suchas a government agency, to inform the target entity of a possible crowdgathering along with ancillary collected and determined data.

Referring now to FIG. 1, an exemplary networked computer environment 100in accordance with one embodiment is depicted. The networked computerenvironment 100 may include a computer 102 with a processor 104 and adata storage device 106 that is enabled to run a crowd predictionprogram 108a. The networked computer environment 100 may also include aserver 110 that is enabled to run a crowd prediction program 108 b and acommunication network 112. The networked computer environment 100 mayinclude a plurality of computers 102 and servers 110, only one of whichis shown for illustrative brevity. The communication network may includevarious types of communication networks, such as a wide area network(WAN), local area network (LAN), a telecommunication network, a wirelessnetwork, a public switched network and/or a satellite network. It may beappreciated that FIG. 1 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environments may be made based on designand implementation requirements.

The client computer 102 may communicate with server computer 110 via thecommunications network 112. The communications network 112 may includeconnections, such as wire, wireless communication links, or fiber opticcables. As will be discussed with reference to FIG. 3, server computer110 may include internal components 800 a and external components 900 a,respectively and client computer 102 may include internal components 800b and external components 900 b, respectively. Client computer 102 maybe, for example, a mobile device, a telephone, a PDA, a netbook, alaptop computer, a tablet computer, a desktop computer, or any type ofcomputing device capable of running a program and accessing a network.

A program, such as a crowd prediction program 108 a and 108 b may run onthe client computer 102 or on the server computer 110. The crowdprediction program 108 a and 108 b may be used to predict crowdformation based on mobile cellular device direction and velocity ofmovement. The crowd prediction program 108 a and 108 b is explained infurther detail below with respect to FIG. 2.

Referring now to FIG. 2, an operational flowchart illustrating theexemplary process 200 by the crowd prediction program 108 a and 108 b(FIG. 1) according to at least one embodiment is depicted.

At 202, signal information for mobile cellular devices (e.g.,smartphones, tablets, computers, etc.) detected by cell towers may beiteratively collected at intervals for analysis by an electronic device,such as a centralized server. According to at least one embodiment, celltowers may detect signal strength data for each mobile cellular devicewithin the working range of the of the cell tower. Each mobile cellulardevice may have a unique identifier (e.g., electronic serial number(ESN)) that a cell tower may use to identify the source of the cellularsignals within the cell tower's working range. Additionally, each celltower may have a unique identifier (e.g., base station identity code(BSIC)) to identify an individual cell tower. A location data snapshotmay be collected and stored by a server that may include informationsuch as a mobile cellular device identifier, cell tower identifiers,mobile cellular device signal strength indicators and a timestampindicating when the data may have been collected. Collected locationdata snapshots for multiple mobile cellular devices may then be storedin a data repository, such as a database contained in a server foranalysis.

For example, a mobile cellular device having an ESN may produce acellular signal detected by three cell towers (i.e., cell tower A, celltower B and cell tower C). A location data snapshot may be collectedcontaining data from each of the three cell towers. Within the locationdata snapshot may be signal strength data from cell tower A to themobile cellular device (i.e., signal strength indicator A), from celltower B to the mobile cellular device (i.e., signal strength indicatorB), and from cell tower C to the mobile cellular device (i.e., signalstrength indicator C). Additionally, the mobile cellular device's ESN,cell tower A's BSIC, cell tower B's BSIC, cell tower C's BSIC and atimestamp may be included in the location data snapshot. Subsequentlocation data snapshots may then be collected at fixed intervals, suchas once a minute, and stored in a database.

Next, at 204, the direction and velocity of movement for mobile cellulardevices may be calculated based multiple location data snapshots.According to at least one embodiment, signal strength data from multiplecell towers recorded in a single location data snapshot may be used todetermine the location of a mobile cellular device at the time thelocation data snapshot may have been collected. The mobile cellulardevice's direction of movement and velocity of movement may becalculated by comparing the determined location for the mobile cellulardevice over multiple consecutive location data snapshots.

For example, signal strength data contained in a location data snapshotmay be used to calculate a mobile cellular device's location throughtriangulation. By using multiple cell towers with known geographiclocations, data corresponding to the signal strength from the mobilecellular device to nearby cell towers may be used to determine therelative location of the mobile cellular device at the time of thelocation data snapshot. Location data snapshots may include a celltower's BSIC that may be used to look up the cell tower's geographiclocation in a data repository, such as a database, mapping cell towerlocations to BSICs. Cell tower location and signal strength data may beused to then triangulate the mobile cellular device's location.

If a mobile cellular device's location may be determined in multipledata location snapshots, the mobile cellular device's direction andvelocity of movement may then be determined based on tracking the mobilecellular device's change in location over time. For instance, at a firstlocation data snapshot, a mobile cellular device M₀ may be located atpoint X₁. Then at a second location data snapshot, M₀ may be located atpoint X₂. Finally, at a third location data snapshot, M₀ may be locatedat point X₃. A geographic comparison of points X₁, X₂, and X3 mayindicate that point X2 is southeast of point X₁, and that point X3 issoutheast of point X₂. Therefore, process 200 may determine that M₀'sdirection of movement is generally southeast.

Furthermore, the mobile cellular device's velocity of movement may alsobe calculated based on the distance traveled, the time interval betweenlocation data snapshots and the previously determined direction ofmovement. If the distance from X1 to X2 is 1.2 miles and the distancefrom X2 to X3 is 0.8 miles, M₀'s total distance traveled may be twomiles. If the fixed time interval between location data snapshots is oneminute, M₀ traveled two miles in two minutes, or 60 miles per hour. Withthe calculated speed of movement and direction of movement, the mobilecellular device's velocity may be determined. For example, if thedetermined mobile cellular device speed is 60 miles per hour and thedetermined mobile cellular device direction of movement is southeast,the mobile cellular device's velocity may be 60 miles per hoursoutheast.

Then, at 206, calculated direction and velocity of movement data may beaggregated for each mobile cellular device to determine directionalconvergence for sets of mobile cellular devices. According to at leastone embodiment, the mobile cellular device direction and velocity ofmovement calculated previously may be expressed as device movementvectors. Directional convergence may be calculated by determining theslope of the line for each device movement vector and then determiningwhere the lines intersect. For example, three mobile cellular devicesM₁, M₂, and M₃ may have device movement vectors V₁, V₂, and V₃respectively. Then, an equation of a line E₁, E₂ and E₃ may bedetermined corresponding to each device movement vector V₁, V₂ and V₃.From E₁, E₂, and E₃, intersection points may be determined whereby theintersection points may indicate where E₁, E₂, and E₃ intersect andcorrespond to coordinates of a geographical location for eachintersection point. Lines E₁ and E₂ may intersect at point P_(A). LinesE₁ and E₃ may intersect at point P_(B). Finally, lines E₂ and E₃ mayintersect at point P_(C).

Furthermore, the intersection points may be compared to determine if theintersection points fall within a predetermined threshold forconvergence (e.g., intersection points are within 500 feet of eachother). For example, in a scenario where the distance between P_(A) andP_(B) is 400 feet, the distance between P_(A) and P_(C) is 800 feet, thedistance between P_(A) and P_(C) is 700 feet and the threshold forconvergence is 500 feet, P_(A) and P_(B) fall within the convergencethreshold. The intersection point P_(C) may not fall within theconvergence threshold and thus intersection points P_(A) and P_(B) mayform a target area (i.e., convergence area).

At 208, intersection points may be filtered based on predeterminedparameters (i.e., false positive error indicators) to reduce falsepositive errors. A false positive error may occur when a result appearsto be positive when in fact the result is actually negative. As such,false positive errors may occur with respect to the present embodimentwhen a response to crowd formation may be triggered despite theconditions for triggering the response not having been met. In order toreduce false positive errors, filtering criteria may be implemented toignore certain mobile cellular devices that may otherwise trigger acrowd formation response when the response may not be warranted.According to at least one embodiment, filtering may be implemented as astep preceding the prediction of a crowd formation event. According toat least one other embodiment, filtering may be implemented to occurafter a crowd formation event is predicted.

According to at least one implementation, the mobile cellular devices(i.e., mobile device subset) converging on a target area located withinan exempted geographical area may be filtered out and ignored. Forexample, if an exempted geographical area contains the location of alarge public venue, such as a music concert, the mobile cellular devicescorresponding to the target area may be ignored because a large crowdmay already be expected. According to at least one other implementation,target areas may be filtered based on the time of day (i.e., time of dayrange). For example, a geographical area may have a risk of flash mobsforming late at night. Thus, the mobile cellular devices converging on atarget area within the geographical area during daylight hours may befiltered out. It may be appreciated that other filtering criteria may beused depending on the circumstances that may generate false positiveerrors.

Next, at 210, the process 200 may determine if the mobile cellulardevices that are converging on a target area exceed a predefinedthreshold value. According to at least one embodiment, the intersectionpoints determined previously to form a target area may be compared to apredetermined threshold value for the number of mobile cellular devicesconverging on a target area (i.e., estimated crowd size). For example,if a predetermined threshold value for the number of mobile cellulardevices is set at 205, and the number of mobile cellular devicesconverging on a target area is 211, the process may determine that thenumber of mobile cellular devices converging on a target area exceedsthe predetermined threshold value.

According to at least one other embodiment, the predetermined thresholdvalue may include demographic values (e.g., age) for the users of themobile cellular devices converging on the target area. For example, theprocess 200 may request demographic data corresponding with userprofiles associated with the mobile cellular devices present in thelocation data snapshots. According to at least one other embodiment, thepredetermined threshold value may include the rate mobile cellulardevices are convergence on a target area (i.e., rate of crowd growthvalue).

According to at least one other embodiment, the predetermined thresholdvalue may include detecting a previously formed crowd moving to a newtarget area. The previously formed crowd may have been detectedpreviously by the process 200 and monitored whether or not the process200 reacted (e.g., by generating an alert) to the formation of the crowdbased on filtering criteria. According to at least one implementation,the process 200 may continue to monitor the mobile cellular devicesmaking up the previously formed crowd to determine if a number of themobile cellular devices moving from the previously formed crowd to a newtarget area may exceed a predetermined number value. According to atleast one other implementation, the process 200 may determine that apreviously formed crowd may be moving to a new target area based on apercentage of the total previously formed crowd moving to the new targetarea. For example, for an existing crowd that includes 400 mobilecellular devices located within a current target area, the process 200may determine that 119 mobile cellular devices from the crowd of 400mobile cellular devices may be moving in a similar direction and may beconverging on a new target area. If the predetermined threshold value isset at up to 25% of the mobile cellular devices making up the previouslyformed crowd moving to a new target area, the process may then determinethat the 119 mobile cellular devices from the previously formed crowdthat may be converging on a new target area exceeds the threshold value.It may be appreciated that other thresholds may be used as well ascombinations of multiple thresholds.

If the mobile cellular devices converging on a target area exceed thepredetermined threshold value at 210, the process 200 may trigger anotification or otherwise react at 212. According to at least oneembodiment, a notification may be generated and sent to a target entity,such as a government agency, to warn of a possible crowd forming. Thenotification may include data such as the location of the target area,rate mobile cellular devices are convergence on a target area, thenumber of mobile cellular devices converging on the target area, anddemographic data corresponding with the owners of the mobile cellulardevices converging on the target area.

However, if the number of mobile cellular devices converging on a targetarea does not exceed the predetermined threshold value at 210, theprocess may return to 202 to continue collecting data.

FIG. 3 is a block diagram 300 of internal and external components ofcomputers depicted in FIG. 1 in accordance with an illustrativeembodiment of the present invention. It should be appreciated that FIG.3 provides only an illustration of one implementation and does not implyany limitations with regard to the environments in which differentembodiments may be implemented. Many modifications to the depictedenvironments may be made based on design and implementationrequirements.

Data processing system 800, 900 is representative of any electronicdevice capable of executing machine-readable program instructions. Dataprocessing system 800, 900 may be representative of a smart phone, acomputer system, PDA, or other electronic devices. Examples of computingsystems, environments, and/or configurations that may represented bydata processing system 800, 900 include, but are not limited to,personal computer systems, server computer systems, thin clients, thickclients, hand-held or laptop devices, multiprocessor systems,microprocessor-based systems, network PCs, minicomputer systems, anddistributed cloud computing environments that include any of the abovesystems or devices.

User client computer 102 (FIG. 1), and network server 110 (FIG. 1) mayinclude respective sets of internal components 800 a, b and externalcomponents 900 a, b illustrated in FIG. 3. Each of the sets of internalcomponents 800 a, b includes one or more processors 820, one or morecomputer-readable RAMs 822, and one or more computer-readable ROMs 824on one or more buses 826, and one or more operating systems 828 and oneor more computer-readable tangible storage devices 830. The one or moreoperating systems 828 and programs such as a crowd prediction program108 a and 108 b (FIG. 1), may be stored on one or more computer-readabletangible storage devices 830 for execution by one or more processors 820via one or more RAMs 822 (which typically include cache memory). In theembodiment illustrated in FIG. 3, each of the computer-readable tangiblestorage devices 830 is a magnetic disk storage device of an internalhard drive. Alternatively, each of the computer-readable tangiblestorage devices 830 is a semiconductor storage device such as ROM 824,EPROM, flash memory or any other computer-readable tangible storagedevice that can store a computer program and digital information.

Each set of internal components 800 a, b also includes a R/W drive orinterface 832 to read from and write to one or more portablecomputer-readable tangible storage devices 936 such as a CD-ROM, DVD,memory stick, magnetic tape, magnetic disk, optical disk orsemiconductor storage device. The crowd prediction program 108 a and 108b (FIG. 1) can be stored on one or more of the respective portablecomputer-readable tangible storage devices 936, read via the respectiveR/W drive or interface 832 and loaded into the respective hard drive830.

Each set of internal components 800 a, b may also include networkadapters (or switch port cards) or interfaces 836 such as a TCP/IPadapter cards, wireless wi-fi interface cards, or 3G or 4G wirelessinterface cards or other wired or wireless communication links. Thecrowd prediction program 108 a (FIG. 1) in client computer 102 (FIG. 1)and the crowd prediction program 108 b (FIG. 1) in network servercomputer 110 (FIG. 1) can be downloaded from an external computer (e.g.,server) via a network (for example, the Internet, a local area networkor other, wide area network) and respective network adapters orinterfaces 836. From the network adapters (or switch port adaptors) orinterfaces 836, the crowd prediction program 108 a (FIG. 1) in clientcomputer 102 (FIG. 1) and the crowd prediction program 108 b (FIG. 1) innetwork server computer 110 (FIG. 1) are loaded into the respective harddrive 830. The network may comprise copper wires, optical fibers,wireless transmission, routers, firewalls, switches, gateway computersand/or edge servers.

Each of the sets of external components 900 a, b can include a computerdisplay monitor 920, a keyboard 930, and a computer mouse 934. Externalcomponents 900 a, b can also include touch screens, virtual keyboards,touch pads, pointing devices, and other human interface devices. Each ofthe sets of internal components 800 a, b also includes device drivers840 to interface to computer display monitor 920, keyboard 930, andcomputer mouse 934. The device drivers 840, R/W drive or interface 832and network adapter or interface 836 comprise hardware and software(stored in storage device 830 and/or ROM 824).

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method for predicting crowd formation based onmovement of a plurality of mobile devices, the method comprising:collecting a plurality of location data snapshots based on the pluralityof mobile devices and a plurality of cell towers; requesting a pluralityof demographic values from a plurality of user profiles associated witha plurality of users using the plurality of mobile devices based on thecollected plurality of location data snapshots; receiving the requestedplurality of demographic values associated with each of the plurality ofusers, the plurality of users each using a mobile device collectivelyforming the plurality of mobile devices; determining a plurality ofdevice positions corresponding with each of the mobile devices of theplurality of mobile devices; determining a device movement vector foreach mobile device within the plurality of mobile devices based onchanges from comparing the determined plurality of device positions witheach mobile device over a time period; calculating a directionalconvergence by (i) determining a slope of the line for each determineddevice movement vector and then (ii) determining a point where aplurality of the determined slope of the lines intersect; determining afuture device position corresponding with each of the mobile deviceswithin the plurality of mobile devices based on the calculateddirectional convergence; determining when a mobile device subset withinthe plurality of mobile devices exceeds a convergence threshold valuebased on the determined future device position corresponding with eachof the mobile devices; determining when the received plurality ofdemographic values corresponds to a subset of users associated with themobile device subset exceeds a demographic threshold value; andtriggering a convergence response based on the mobile device subsetexceeding the convergence threshold value, and determining that thereceived plurality of demographic values corresponding to the subset ofusers associated with the mobile device subset exceeds the demographicthreshold value.
 2. The method of claim 1, further comprising: filteringthe mobile device subset based on at least one false positive errorindicator.
 3. The method of claim 1, further comprising: collecting theplurality of location data snapshots, wherein the collecting theplurality of location data snapshots comprises iteratively collectingthe plurality of location data snapshots at a fixed time interval. 4.The method of claim 3, wherein the plurality of data snapshots comprisesa plurality of cell tower identifiers corresponding with the pluralityof cell towers, a plurality of mobile device identifiers correspondingwith the plurality of mobile devices, a plurality of signal strengthindicators, and a timestamp.
 5. The method of claim 4, wherein thedetermining the plurality of device positions corresponding with eachmobile device comprises triangulating the position of each mobile devicebased on the plurality of signal strength indicators.
 6. The method ofclaim 2, wherein the at least one false positive error indicatorcomprises at least one of a time of day range and an exempted area. 7.The method of claim 1, wherein the convergence threshold value comprisesat least one of an estimated crowd size, a rate of crowd growth value, aconvergence area location, and at least one demographic value associatedwith at least one user using a mobile device within the plurality ofmobile devices.
 8. The method of claim 7, wherein the triggeredconvergence response comprises generating a notification containing atleast one of the estimated crowd size, the rate of crowd growth value,the convergence area location, and the at least one demographic value.9. The method of claim 1, wherein the threshold value comprisesdetecting movement of an existing crowd to a new location.
 10. Acomputer system for predicting crowd formation based on movement of aplurality of mobile devices, comprising: one or more processors, one ormore computer-readable memories, one or more computer-readable tangiblestorage medium, and program instructions stored on at least one of theone or more tangible storage medium for execution by at least one of theone or more processors via at least one of the one or more memories,wherein the computer system is capable of performing a methodcomprising: collecting a plurality of location data snapshots based onthe plurality of mobile devices and a plurality of cell towers;requesting a plurality of demographic values from a plurality of userprofiles associated with a plurality of users using the plurality ofmobile devices based on the collected plurality of location datasnapshots; receiving the requested plurality of demographic valuesassociated with each of the plurality of users, the plurality of userseach using a mobile device collectively forming the plurality of mobiledevices; determining a plurality of device positions corresponding witheach of the mobile devices of the plurality of mobile devices;determining a device movement vector for each mobile device within theplurality of mobile devices based on changes from comparing thedetermined plurality of device positions with each mobile device over atime period; calculating a directional convergence by (i) determining aslope of the line for each determined device movement vector and then(ii) determining a point where a plurality of the determined slope ofthe lines intersect; determining a future device position correspondingwith each of the mobile devices within the plurality of mobile devicesbased on the calculated directional convergence; determining when amobile device subset within the plurality of mobile devices exceeds aconvergence threshold value based on the determined future deviceposition corresponding with each of the mobile devices; determining whenthe received plurality of demographic values corresponds to a subset ofusers associated with the mobile device subset exceeds a demographicthreshold value; and triggering a convergence response based on themobile device subset exceeding the convergence threshold value, anddetermining that the received plurality of demographic valuescorresponding to the subset of users associated with the mobile devicesubset exceeds the demographic threshold value.
 11. The computer systemof claim 10, further comprising: filtering the mobile device subsetbased on at least one false positive error indicator.
 12. The computersystem of claim 10, further comprising: collecting the plurality oflocation data snapshots, wherein the collecting the plurality oflocation data snapshots comprises iteratively collecting the pluralityof location data snapshots at a fixed time interval.
 13. The computersystem of claim 12, wherein the plurality of data snapshots comprises aplurality of cell tower identifiers corresponding with the plurality ofcell towers, a plurality of mobile device identifiers corresponding withthe plurality of mobile devices, a plurality of signal strengthindicators, and a timestamp.
 14. The computer system of claim 13,wherein the determining the plurality of device positions correspondingwith each mobile device comprises triangulating the position of themobile device based on the plurality of signal strength indicators. 15.The computer system of claim 11, wherein the at least one false positiveerror indicator comprises at least one of a time of day range and anexempted area.
 16. The computer system of claim 10, wherein theconvergence threshold value comprises at least one of an estimated crowdsize, a rate of crowd growth value, a convergence area location, and atleast one demographic value associated with at least one user using amobile device within the plurality of mobile devices.
 17. A computerprogram product for predicting crowd formation based on movement of aplurality of mobile devices, comprising: one or more computer-readablestorage medium and program instructions stored on at least one of theone or more tangible storage medium, the program instructions executableby a processor, the program instructions comprising: programinstructions to collect a plurality of location data snapshots based onthe plurality of mobile devices and a plurality of cell towers; programinstructions to request a plurality of demographic values from aplurality of user profiles associated with a plurality of users usingthe plurality of mobile devices based on the collected plurality oflocation data snapshots; program instructions to receive the requestedplurality of demographic values associated with each of the plurality ofusers, the plurality of users each using a mobile device collectivelyforming the plurality of mobile devices; program instructions todetermine a plurality of device positions corresponding with each of themobile devices of the plurality of mobile devices; program instructionsto determine a device movement vector for each mobile device within theplurality of mobile devices based on changes from comparing thedetermined plurality of device positions with each mobile device over atime period; program instructions to calculate a directional convergenceby (i) determining a slope of the line for each determined devicemovement vector and then (ii) determining a point where a plurality ofthe determined slope of the lines intersect; program instructions todetermine a future device position corresponding with each of the mobiledevices within the plurality of mobile devices based on the calculateddirectional convergence; program instructions to determine when a mobiledevice subset within the plurality of mobile devices exceeds aconvergence threshold value based on the corresponding with each of themobile devices; program instructions to determine when the receivedplurality of demographic values corresponds to a subset of usersassociated with the mobile device subset exceeds a demographic thresholdvalue; and program instructions to trigger a convergence response basedon the mobile device subset exceeding the convergence threshold value,and determining that the received plurality of demographic valuescorresponding to the subset of users associated with the mobile devicesubset exceeds the demographic threshold value.
 18. The computer programproduct of claim 17, further comprising: program instructions to filterthe mobile device subset based on at least one false positive errorindicator.
 19. The computer program product of claim 17, furthercomprising: program instructions to collect the plurality of locationdata snapshots, wherein the program instructions to collect theplurality of location data snapshots comprises iteratively collectingthe plurality of location data snapshots at a fixed time interval. 20.The computer program product of claim 17, wherein the plurality of datasnapshots comprises a plurality of cell tower identifiers correspondingwith the plurality of cell towers, a plurality of mobile deviceidentifiers corresponding with the plurality of mobile devices, aplurality of signal strength indicators, and a timestamp.